Demo of customising TiddlyWiki: See http://tiddlywiki.com/#SystemTags Example of a deeply customised "edition": http://tw5.scholars.tiddlyspot.com
It's tiddlers, all the way down. The tiddler model is used for: The boot kernel brings up enough of the infrastructure to load plugins. The core code itself is a plugin.
The rendering pipeline does everything: See the template for the HTML, and for some of the CSS. TiddlyWiki5 provides a TiddlyWeb-compatible API PouchDB - from Jon Udell's Thali project - https://gist.github.com/judell/9744381
I've learned: The awkward but HTML5-compliant way: Individual deserve the freedom to have private spaces where their thoughts are their own, and where they control their own environment, making their own trade-offs. How can we make an independent web? It's fundamentally asymmetrical; only brave homesteaders run their own servers, most people are happy to rent space from a central service. For civilians, the barriers to running your own server are huge: it's a new cost for most people, and the benefit is intangible. It's one of those situations where the penalties for screwing up can be disproportionately unforgiving: eg, failing to keep backups or to keep security software up to date.
Several other projects share goals with TiddlyWiki: You're already in a demo of TiddlyWiki, but here's a quick run through of using it: Hosted by Government Digital Service in London, 24th June 2015 A tiddler is defined as the smallest semantic unit of information. It is a structure optimised for reuse through aggregation and composition. Wikification is the process of converting WikiText into HTML. It makes linking (and other hypertext operations) become part of the punctuation of writing.
Allows changes to be saved directly to the file system in Firefox (including Firefox for Android). Show how sidebar state is held in $:/state/sidebar: Basic primitives for user interfaces:Customisation via System Tags
Everything is a Tiddler
Everything is Wikification
Running TiddlyWiki Under Node.js
Creating a single file wiki
tiddlywiki mywiki --init tw5.com
tiddlywiki mywiki --rendertiddler $:/core/save/all index.html text/plainServing a wiki over HTTP
tiddlywiki my2wiki --init server
tiddlywiki my2wiki --serverOther options
Demo 4: Node.js
Installation
sudo npm install -g tiddlywikiImport single file wiki into a wiki folder
tiddlywiki MyWiki --init server
tiddlywiki MyWiki --load ~/path/to/wiki.htmlClient Server Mode
tiddlywiki MyWiki --serverStatic Site Generation
tiddlywiki MyWiki --rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html static text/plain10+ years of TiddlyWiki
How TiddlyWiki Saves Changes
var link = document.createElement("a");
link.setAttribute("target","_blank");
link.setAttribute("href","data:text/html," + encodeURIComponent(text));
link.setAttribute("download",filename);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);Serverlessness FTW!
Shout-outs
Demo of Single File Edition
Demo
Static Site Generation
tiddlywiki ./myWiki \
--rendertiddler $:/core/templates/static.template.html static.html text/plain \
--rendertiddler $:/core/templates/alltiddlers.template.html alltiddlers.html text/plain \
--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html static text/plain \
--rendertiddler $:/core/templates/static.template.css static/static.css text/plainHere Comes TiddlyWiki
"Making stuff for the web
is way too much fun to
leave it to developers"Jeremy Ruston
@Jermolene
http://tiddlywiki.com/talkytalky
Task Management Demo
<$list filter="[!has[draft.of]tag[task]!tag[done]sort[created]]">
<$checkbox tag="done"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox>
</$list>Duality of TiddlyWiki
Tiddly === Everything is a tiddler
Wiki === Everything is wikification
Demo 3: TiddlyDesktop
Saving with TiddlyFox
Demo 2: TiddlyFox, Hierarchies and Customisation
$:/tags/SideBar containing:<div class="tc-table-of-contents">
<<toc-selective-expandable 'TableOfContents'>>
</div>User Interface State
$tw.wiki.addTiddler(new $tw.Tiddler({title: "$:/state/sidebar",text: "yes"}))<$transclude> widget to transclude another tiddler<$reveal> widget to selectively show or hide content according to a state tiddler<$button> widget set or toggle a state tiddler<$list> widget to repeat a template for each of several tiddlersUsing TiddlyWiki as a Library
/*
A sample node.js application that uses TiddlyWiki5 as a library
*/
var $tw = {};
require("../TiddlyWiki5/boot/bootprefix.js").bootprefix($tw)
// Dummy command line arguments telling TW5 not to load a wiki from the filesystem
$tw.boot = $tw.boot || {};
$tw.boot.argv = ["*"];
require("../TiddlyWiki5/boot/boot.js").TiddlyWiki($tw);
// Boot TiddlyWiki
$tw.boot.boot();
// Add some tiddlers
$tw.wiki.addTiddler({
title: "TiddlerOne",
text: "Text of tiddler one, incorporating the {{TiddlerTwo}}",
tags: ["alpha", "beta"]
});
$tw.wiki.addTiddler({
title: "TiddlerTwo",
text: "Text of tiddler two"
});
// Render a tiddler as HTML
var html = $tw.wiki.renderTiddler("text/html","TiddlerOne");
console.log(html);